//
//  CoreAnimationEffect.h
//  CoreEffect
//
//  Created by ZhengWei on 16/4/18.
//  Copyright © 2016年 Bourbon. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface CoreAnimationEffect : NSObject
#pragma mark - Custom Animation
/**
 *  快速构建一个你自定义的动画，有以下参数供你设置
 *
 *  @param type           动画过渡类型，（调用系统预设值Type类型，需要引入 #import <QuartzCore/QuartzCore.h> ）
 *  @param subType        动画过渡方向（子类型）
 *  @param duration       动画持续时间
 *  @param timingFunction 动画定时函数属性
 *  @param theView        需要添加动画的view
 */
+(void)showAnimationType:(NSString *)type
             withSubType:(NSString *)subType
                duration:(CFTimeInterval)duration
          timingFunction:(NSString *)timingFunction
                    view:(UIView *)theView;

#pragma mark - Preset Animation
/**
 *  下面是一些常用的动画效果
 */
//reveal
+(void)animationRevealFromBottom:(UIView *)view;
+(void)animationRevealFromTop:(UIView *)view;
+(void)animationRevealFromLeft:(UIView *)view;
+(void)animationRevealFromRight:(UIView *)view;

//渐隐渐消
+(void)animationEaseIn:(UIView *)view;
+(void)animationEaseOut:(UIView *)view;

//翻转
+(void)animationFlipFromLeft:(UIView *)view;
+(void)animationFlipFromRigh:(UIView *)view;

//翻页
+(void)animationCurlUp:(UIView *)view;
+(void)animationCurlDown:(UIView *)view;

//push
+(void)animationPushUp:(UIView *)view;
+(void)animationPushDown:(UIView *)view;
+(void)animationPushLeft:(UIView *)view;
+(void)animationPushRight:(UIView *)view;

//move
+(void)animationMoveUp:(UIView *)view
              duration:(CFTimeInterval)duration;
+(void)animationMoveDown:(UIView *)view
                duration:(CFTimeInterval)duration;
+(void)animationMoveLeft:(UIView *)view;
+(void)animationMoveRight:(UIView *)view;
//旋转缩放
//各种旋转缩放效果
+(void)animationRotateAndScaleEffects:(UIView *)view;
//旋转同时缩小放大效果
+(void)animationRotateAndScaleDownUp:(UIView *)view;

#pragma mark - Private API
/**
 * 
 下面动画里用到的某些属性在当前API里是不合法的,但是也可以用.
 */
+(void)animationFlipFromTop:(UIView *)view;
+(void)animationFlipFromBottom:(UIView *)view;
+(void)animationCubeFromLeft:(UIView *)view;
+(void)animationCubeFromRight:(UIView *)view;
+(void)animationCubeFromTop:(UIView *)view;
+(void)animationCubeFromBottom:(UIView *)view;
+(void)animationSuckEffect:(UIView *)view;
+(void)animationRippleEffect:(UIView *)view;
+(void)animationCameraOpen:(UIView *)view;
+(void)animationCameraClose:(UIView *)view;
@end
